<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PU2CLR Si4735 Arduino Library: SI4735-D60 / SI4732-A10  NBFM</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><img alt="Logo" src="logo_si4735.png"/></td>
  <td id="projectalign">
   <div id="projectname">PU2CLR Si4735 Arduino Library<span id="projectnumber">&#160;2.1.4</span>
   </div>
   <div id="projectbrief">Arduino Library for Si47XX Devices - By Ricardo Lima Caratti</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__group20.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">SI4735-D60 / SI4732-A10 NBFM</div></div>
</div><!--header-->
<div class="contents">

<p>Narrow Band FM (Frequency Modulation) implementation.<br  />
 Firstly, the SSB patch content is not part of this library. These patches were published by Mr. Vadim Afonkin on his Dropbox repository. The author of this Si4735 Arduino Library does not encourage anyone to use the SSB patches content for commercial purposes. In other words, while this library supports SSB patches, the patches themselves should not be considered a part of this library.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gabed83f2c503dc3b35ca115ef6b08d552"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group20.html#gabed83f2c503dc3b35ca115ef6b08d552">SI4735::patchPowerUpNBFM</a> ()</td></tr>
<tr class="memdesc:gabed83f2c503dc3b35ca115ef6b08d552"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method can be used to prepare the device to apply NBFM patch.  <br /></td></tr>
<tr class="separator:gabed83f2c503dc3b35ca115ef6b08d552"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd298b10c6c7e760e7233b50500773c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group20.html#gadd298b10c6c7e760e7233b50500773c3">SI4735::loadPatchNBFM</a> (const uint8_t *patch_content, const uint16_t patch_content_size)</td></tr>
<tr class="memdesc:gadd298b10c6c7e760e7233b50500773c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a given NBFM patch content.  <br /></td></tr>
<tr class="separator:gadd298b10c6c7e760e7233b50500773c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga505445484e643ae95a2a9300eac9c4c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group20.html#ga505445484e643ae95a2a9300eac9c4c1">SI4735::setNBFM</a> ()</td></tr>
<tr class="memdesc:ga505445484e643ae95a2a9300eac9c4c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the radio to FM function.  <br /></td></tr>
<tr class="separator:ga505445484e643ae95a2a9300eac9c4c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga22adda493bc8278a376c1ba6f6ea4668"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group20.html#ga22adda493bc8278a376c1ba6f6ea4668">SI4735::setNBFM</a> (uint16_t fromFreq, uint16_t toFreq, uint16_t initialFreq, uint16_t step)</td></tr>
<tr class="separator:ga22adda493bc8278a376c1ba6f6ea4668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c8c57c727fd102f0eb3d59ec995692f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group20.html#ga5c8c57c727fd102f0eb3d59ec995692f">SI4735::setFrequencyNBFM</a> (uint16_t freq)</td></tr>
<tr class="memdesc:ga5c8c57c727fd102f0eb3d59ec995692f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the frequency to the corrent function of the Si4735 on NBFM mode.  <br /></td></tr>
<tr class="separator:ga5c8c57c727fd102f0eb3d59ec995692f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Narrow Band FM (Frequency Modulation) implementation.<br  />
 Firstly, the SSB patch content is not part of this library. These patches were published by Mr. Vadim Afonkin on his Dropbox repository. The author of this Si4735 Arduino Library does not encourage anyone to use the SSB patches content for commercial purposes. In other words, while this library supports SSB patches, the patches themselves should not be considered a part of this library. </p>
<p>This implementation was not tested.</p>
<p>No NBFM patch was found to test this implementartion.</p>
<p>This implementation is applicable to Si47035-D60 and SI4732-A10 when powering up the part in FM mode with the NBFM patch</p>
<p>What does NBFM patch means? In this context, a patch is a piece of software used to change the behavior of the SI4735-D60/SI4732-A10 device. There is little information available about patching the SI4735-D60/SI4732-A10.</p>
<p>In this context, a patch is a piece of software used to change the behavior of the <a class="el" href="class_s_i4735.html" title="SI4735 Class.">SI4735</a> device. There is little information available about patching the <a class="el" href="class_s_i4735.html" title="SI4735 Class.">SI4735</a>. The following information is the understanding of the author of this project and is not necessarily correct.</p>
<p>A patch is executed internally (run by internal MCU) of the device. Usually, patches are used to fix bugs or add new features over what the firmware installed in the internal ROM of the device offers. Patches for the <a class="el" href="class_s_i4735.html" title="SI4735 Class.">SI4735</a> are distributed in binary form and are transferred to the internal RAM of the device by the host MCU (in this case, Arduino boards).</p>
<p>Since the RAM is volatile memory, the patch stored on the device gets lost when you turn off the system. Consequently, the content of the patch has to be transferred to the device every time the device is powered up.</p>
<p>I would like to thank Mr Vadim Afonkin for making available the SSBRX patches for SI4735-D60/SI4732-A10 on his Dropbox repository. On this repository you have two files, amrx_6_0_1_ssbrx_patch_full_0x9D29.csg and amrx_6_0_1_ssbrx_patch_init_0xA902.csg. It is important to know that the patch content of the original files is constant hexadecimal representation used by the language C/C++. Actally, the original files are in ASCII format (not in binary format). If you are not using C/C++ or if you want to load the files directly to the <a class="el" href="class_s_i4735.html" title="SI4735 Class.">SI4735</a>, you must convert the values to numeric value of the hexadecimal constants. For example: 0x15 = 21 (00010101); 0x16 = 22 (00010110); 0x01 = 1 (00000001); 0xFF = 255 (11111111);</p>
<p>ATTENTION: The author of this project cannot guarantee that procedures shown here will work in your development environment. Proceed at your own risk. This library works with the I²C communication protocol to send an SSB extension PATCH to SI4735-D60 and SI4732-A10 devices. Once again, the author disclaims any and all liability for any damage or effects this procedure may have on your devices. Proceed at your own risk. </p><dl class="section see"><dt>See also</dt><dd>AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE; pages 3 and 5 </dd></dl>
<h2 class="groupheader">Function Documentation</h2>
<a id="gabed83f2c503dc3b35ca115ef6b08d552" name="gabed83f2c503dc3b35ca115ef6b08d552"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabed83f2c503dc3b35ca115ef6b08d552">&#9670;&#160;</a></span>patchPowerUpNBFM()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SI4735::patchPowerUpNBFM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method can be used to prepare the device to apply NBFM patch. </p>
<p>Call queryLibraryId before call this method. Powerup the device by issuing the POWER_UP command with FUNC = 0 (FM Receiver).</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__group08.html#ga7bf47d3aab5952fa8895bd9094256dd8" title="Set the Max Delay after Set Frequency.">setMaxDelaySetFrequency()</a> </dd>
<dd>
<a class="el" href="_s_i4735_8h.html#a921cafdf244d2d7db9eeffa524e11663">MAX_DELAY_AFTER_POWERUP</a> </dd>
<dd>
Si47XX PROGRAMMING GUIDE; AN332 (REV 1.0); pages 64 and 215-220 and </dd>
<dd>
AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE AMENDMENT FOR SI4735-D60 SSB AND NBFM PATCHES; page 32. </dd></dl>

<p class="reference">References <a class="el" href="group__group06.html#ga7b45c1b22c3c1a3f2326bee913d1e1e0">SI4735::waitToSend()</a>.</p>

<p class="reference">Referenced by <a class="el" href="group__group20.html#gadd298b10c6c7e760e7233b50500773c3">SI4735::loadPatchNBFM()</a>.</p>

</div>
</div>
<a id="gadd298b10c6c7e760e7233b50500773c3" name="gadd298b10c6c7e760e7233b50500773c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadd298b10c6c7e760e7233b50500773c3">&#9670;&#160;</a></span>loadPatchNBFM()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SI4735::loadPatchNBFM </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>patch_content</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint16_t&#160;</td>
          <td class="paramname"><em>patch_content_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Loads a given NBFM patch content. </p>
<p>Configures the Si4735-D60/SI4732-A10 device to work with NBFM.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">patch_content</td><td>point to patch content array </td></tr>
    <tr><td class="paramname">patch_content_size</td><td>size of patch content </td></tr>
  </table>
  </dd>
</dl>

<p class="reference">References <a class="el" href="group__group20.html#gabed83f2c503dc3b35ca115ef6b08d552">SI4735::patchPowerUpNBFM()</a>, and <a class="el" href="group__group17.html#gadfc2c82524918224cf19fec5b7fcf6d1">SI4735::queryLibraryId()</a>.</p>

</div>
</div>
<a id="ga505445484e643ae95a2a9300eac9c4c1" name="ga505445484e643ae95a2a9300eac9c4c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga505445484e643ae95a2a9300eac9c4c1">&#9670;&#160;</a></span>setNBFM() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SI4735::setNBFM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the radio to FM function. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>Adjust the power up parameters</dd></dl>
<p>Set the radio to NBFM function.</p>
<dl class="section see"><dt>See also</dt><dd>AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE; pages 32 and 14 </dd>
<dd>
<a class="el" href="group__group08.html#ga753390952a1f2c2a98343979f1f3daa0" title="Sets the radio to AM function. It means: LW MW and SW.">setAM()</a>, <a class="el" href="group__group17.html#ga7c48f2af416b1f89dbedbfbe9a637620">setSSB()</a>, <a class="el" href="group__group08.html#gacd89e7b8adefcbc4e89f802acb915906" title="Sets the radio to FM function.">setFM()</a> </dd>
<dd>
<a class="el" href="group__group08.html#ga794f6fe7987e146a0135b8e6fabec55c" title="Sets the current step value.">setFrequencyStep()</a> </dd>
<dd>
void <a class="el" href="group__group08.html#ga63d205f2d3169ba877a2bd2ee28d224f" title="Set the frequency to the corrent function of the Si4735 (FM, AM or SSB)">SI4735::setFrequency(uint16_t freq)</a> </dd></dl>

<p class="reference">References <a class="el" href="group__group07.html#ga3e228da65641f4dcf4253262e19bde9b">SI4735::radioPowerUp()</a>.</p>

<p class="reference">Referenced by <a class="el" href="group__group20.html#ga22adda493bc8278a376c1ba6f6ea4668">SI4735::setNBFM()</a>.</p>

</div>
</div>
<a id="ga22adda493bc8278a376c1ba6f6ea4668" name="ga22adda493bc8278a376c1ba6f6ea4668"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga22adda493bc8278a376c1ba6f6ea4668">&#9670;&#160;</a></span>setNBFM() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SI4735::setNBFM </td>
          <td>(</td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>fromFreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>toFreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>initialFreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>step</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Tunes the SSB (LSB or USB) receiver to a frequency between 64 and 108 MHz.</p>
<dl class="section see"><dt>See also</dt><dd>AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE; </dd>
<dd>
<a class="el" href="group__group08.html#ga753390952a1f2c2a98343979f1f3daa0" title="Sets the radio to AM function. It means: LW MW and SW.">setAM()</a>, <a class="el" href="group__group08.html#gacd89e7b8adefcbc4e89f802acb915906" title="Sets the radio to FM function.">setFM()</a>, <a class="el" href="group__group17.html#ga7c48f2af416b1f89dbedbfbe9a637620">setSSB()</a> </dd>
<dd>
<a class="el" href="group__group08.html#ga794f6fe7987e146a0135b8e6fabec55c" title="Sets the current step value.">setFrequencyStep()</a> </dd>
<dd>
void <a class="el" href="group__group08.html#ga63d205f2d3169ba877a2bd2ee28d224f" title="Set the frequency to the corrent function of the Si4735 (FM, AM or SSB)">SI4735::setFrequency(uint16_t freq)</a></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fromFreq</td><td>minimum frequency for the band </td></tr>
    <tr><td class="paramname">toFreq</td><td>maximum frequency for the band </td></tr>
    <tr><td class="paramname">initialFreq</td><td>initial frequency </td></tr>
    <tr><td class="paramname">step</td><td>step used to go to the next channel </td></tr>
  </table>
  </dd>
</dl>

<p class="reference">References <a class="el" href="group__group20.html#ga505445484e643ae95a2a9300eac9c4c1">SI4735::setNBFM()</a>.</p>

</div>
</div>
<a id="ga5c8c57c727fd102f0eb3d59ec995692f" name="ga5c8c57c727fd102f0eb3d59ec995692f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5c8c57c727fd102f0eb3d59ec995692f">&#9670;&#160;</a></span>setFrequencyNBFM()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SI4735::setFrequencyNBFM </td>
          <td>(</td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>freq</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the frequency to the corrent function of the Si4735 on NBFM mode. </p>
<p>You have to call setup or setPowerUp before call setFrequency.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_s_i4735.html#a5f101b95b6fc5127b9e9d92a21f44ab6" title="Stores the maximum delay after set frequency command (in ms).">maxDelaySetFrequency()</a> </dd>
<dd>
<a class="el" href="_s_i4735_8h.html#a3d77e4d0458eed0b6ba584c737e8df21">MAX_DELAY_AFTER_SET_FREQUENCY</a> </dd>
<dd>
Si47XX PROGRAMMING GUIDE; AN332 (REV 1.0); pages 70, 135 </dd>
<dd>
AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE; page 39</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">uint16_t</td><td>freq is the frequency to change. For example, FM =&gt; 10390 = 103.9 MHz; AM =&gt; 810 = 810 kHz. </td></tr>
  </table>
  </dd>
</dl>

<p class="reference">References <a class="el" href="group__group06.html#ga7b45c1b22c3c1a3f2326bee913d1e1e0">SI4735::waitToSend()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
  </ul>
</div>
</body>
</html>
